package com.example.deal.client.feign;

import org.springframework.cloud.openfeign.FeignClient;

import com.example.config.FeignConfiguration;
import com.example.deal.broker.entity.Deal;

import feign.Headers;
import feign.Param;
import feign.RequestLine;

@FeignClient(name = "microservice-deal-cloud",configuration=FeignConfiguration.class)
public interface FeignClientInterface {
	
	/**
	 * 使用Feign自己的mvc Contract,它与SpringMVC Contract有一些不一样，参考下例子
	 * 1、对Http请求的注解有增强封装：@RequestLine VS @RequestMap/@Getmapping
	 * 2、@Param VS @Pathvariable
	 * 3、使用Feign自己的 mvc contract我们可以自定义对Http增强的处理，比如使用@Headers声明Content-Type为 json
	 * 更多参考：https://github.com/OpenFeign/feign
	 * @param id
	 * @return
	 */
	@Headers("Content-Type: application/json")
	@RequestLine("GET /deal/{id}")
	public Deal findById(@Param(value="id") Long id);
}
